// pages/calendar/calendar.js
import { server } from "../../utils/config.js";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    server: server,
    year: 2025,
    month: 10,
    weeks: ['一', '二', '三', '四', '五', '六', '日'],
    days: []
  },

  holidayMap: {
    '1-1': '元旦',
    '5-1': '劳动节',
    '10-1': '国庆节',
    '10-2': '国庆假期',
    '10-3': '国庆假期',
    '10-4': '国庆假期',
    '10-5': '国庆假期',
    '10-6': '国庆假期',
    '10-7': '国庆假期',
    '1-29': '春节',
    '1-30': '春节假期',
    '1-31': '春节假期',
    '2-1': '春节假期',
    '2-2': '春节假期',
    '2-3': '春节假期',
    '2-4': '春节假期',
    '2-12': '元宵节',
    '4-4': '清明节',
    '5-31': '端午节',
    '10-6': '中秋节'
  },

  generateCalendar(year, month) {
    let days = [];
    let firstDay = new Date(year, month - 1, 1).getDay() || 7;
    let totalDays = new Date(year, month, 0).getDate();

    // 补前置空格
    for (let i = 1; i < firstDay; i++) {
      days.push({ day: '', festival: '', bgColor: '' });
    }

    for (let d = 1; d <= totalDays; d++) {
      let date = new Date(year, month - 1, d);

      // 默认颜色
      let bgColor = '';

      // === 军训 ===
      if (month === 10 && d >= 10 && d <= 23) {
        bgColor = '#d0f5d0'; // 绿色
      }

      // === 考试 ===
      if (
        (month === 12 && d >= 29) || // 12.29 之后
        (month === 1 && d <= 9) ||    // 1.9 之前
        (month === 7 && d >= 6 && d <= 17) // 7月考试
      ) {
        let week = date.getDay();
        if (week !== 0 && week !== 6) { // 排除周末
          bgColor = '#ffe0b2'; // 橙色
        }
      }

      // 节日查表
      let key = `${month}-${d}`;
      let festival = this.holidayMap[key] || '';

      days.push({
        date: `${year}-${month}-${d}`,
        day: d,
        festival,
        bgColor
      });
    }

    this.setData({ year, month, days });
  },

    // 滑动开始
    handleTouchStart(e) {
      this.setData({ touchStartX: e.changedTouches[0].clientX });
    },
  
    // 滑动结束
    handleTouchEnd(e) {
      this.setData({ touchEndX: e.changedTouches[0].clientX });
      let deltaX = this.data.touchEndX - this.data.touchStartX;
  
      if (Math.abs(deltaX) > 50) { // 滑动阈值
        if (deltaX < 0) {
          this.nextMonth();
        } else {
          this.prevMonth();
        }
      }
    },
  
    // 上一月
    prevMonth() {
      let { year, month } = this.data;
      if (year === 2025 && month === 8) return; // 最小边界
  
      if (month === 1) {
        year -= 1;
        month = 12;
      } else {
        month -= 1;
      }
      this.generateCalendar(year, month);
    },
  
    // 下一月
    nextMonth() {
      let { year, month } = this.data;
      if (year === 2026 && month === 7) return; // 最大边界
  
      if (month === 12) {
        year += 1;
        month = 1;
      } else {
        month += 1;
      }
      this.generateCalendar(year, month);
    },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const today = new Date();
    const year = today.getFullYear();
    const month = today.getMonth() + 1; // 注意：0代表一月
    this.generateCalendar(year, month);
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})